home *** CD-ROM | disk | FTP | other *** search
/ Internet Surfer: Getting Started / Internet Surfer - Getting Started (Wayzata Technology)(7231)(1995).bin / pc / mac / bonus / peter_le / finger-1 / my_units / myoomenu.uni < prev    next >
Text File  |  1992-02-24  |  3KB  |  135 lines

  1. unit OOMenus;
  2.  
  3. { This code is part of the Finger/Fingerd source code, written in THINK Pascal 4 }
  4. { Copyright 1991-1992 Peter N Lewis }
  5. { If you use this code, you must give me credit in your about box and documentation }
  6. { This is part of my generic library of routines }
  7.  
  8. interface
  9.  
  10.     var
  11.         editEnabled: boolean;
  12.  
  13.     procedure InitOOMenus (defaultproc: procptr; hstr: str31);
  14.     procedure FinishOOMenus;
  15.     procedure DoDefaultMenu (themenu, theitem: integer);
  16.     function SetOOMenuBar: boolean;
  17.  
  18. implementation
  19.  
  20.     uses
  21.         Traps, Balloons, MyTypes, MyUtils, MyUtilities, BaseGlobals, MyFMenus, OOMainLoop, OOAboutHelp;
  22.  
  23.     function SetOOMenuBar: boolean;
  24.     begin
  25.         SetOOMenuBar := FrontObject.SetMenuBar;
  26.     end;
  27.  
  28.     procedure DoDefaultMenu (themenu, theitem: integer);
  29.         var
  30.             save: grafPtr;
  31.             DAName: str255;
  32.             oe: OSErr;
  33.     begin
  34.         if themenu = M_Apple then begin
  35.             GetPort(save);
  36.             GetItem(GetMHandle(M_apple), theitem, DAName);
  37.             oe := OpenDeskAcc(DAName);
  38.             SetPort(save);
  39.         end
  40.         else if themenu = M_Edit then begin
  41.             FrontObject.DoEditMenu(theitem);
  42.         end;
  43.     end;
  44.  
  45.     procedure SetAboutMenu (themenu, theitem: integer);
  46.     begin
  47.         SetIDItemEnable(themenu, theitem, not ISWObjectFront(about_object));
  48.     end;
  49.  
  50.     procedure SetHelpMenu (themenu, theitem: integer);
  51.     begin
  52.         SetIDItemEnable(themenu, theitem, not ISWObjectFront(help_object));
  53.     end;
  54.  
  55.     procedure DoClose;
  56.     begin
  57.         FrontObject.DoClose
  58.     end;
  59.  
  60.     procedure SetCloseMenu (themenu, theitem: integer);
  61.         var
  62.             fw: windowPtr;
  63.     begin
  64.         fw := FrontWindow;
  65.         if fw = nil then
  66.             SetIDItemEnable(themenu, theitem, false)
  67.         else
  68.             SetIDItemEnable(themenu, theitem, windowPeek(fw)^.goAwayFlag);
  69.     end;
  70.  
  71.     procedure SetEditMenus (menu, item: integer);
  72.     begin
  73.         FrontObject.SetEditMenuItem(item);
  74.     end;
  75.  
  76.     procedure DoQuit;
  77.     begin
  78.         quitNow := true;
  79.     end;
  80.  
  81. {$S Init}
  82.     procedure InitOOMenus (defaultproc: procptr; hstr: str31);
  83.         var
  84.             mh: menuHandle;
  85.             oe: OSErr;
  86.             dummyb: boolean;
  87.     begin
  88.         quitNow := false;
  89.         editEnabled := true;
  90.         if defaultproc = nil then
  91.             defaultproc := @DoDefaultMenu;
  92.  
  93.         InitFMenus(defaultproc);
  94.         InitOOAboutHelp;
  95.  
  96.         MH_Apple := GetFMenu(M_Apple);
  97.         AddResMenu(MH_Apple, 'DRVR');
  98.         InsertMenu(MH_Apple, 0);
  99.         MH_File := GetFMenu(M_File);
  100.         InsertMenu(MH_File, 0);
  101.         MH_Edit := GetFMenu(M_Edit);
  102.         InsertMenu(MH_Edit, 0);
  103.  
  104.         M_HM_Help_I := -1;
  105.         if has_HelpMgr and (hstr <> '') then begin
  106.             oe := HMGetHelpMenuHandle(mh);
  107.             if (oe = noErr) and (mh <> nil) then begin
  108.                 AppendMenu(mh, hstr);
  109.                 M_HM_Help_I := CountMItems(mh);
  110.                 AddFCommand(kHMHelpMenuID, M_HM_Help_I, CHelp);
  111.             end;
  112.         end;
  113.  
  114.         SetFBoth(Cabout, @DoOOAbout, @SetAboutMenu);
  115.         SetFBoth(Chelp, @DoOOHelp, @SetHelpMenu);
  116.         SetFBoth(Cclose, @DoClose, @SetCloseMenu);
  117.         SetFCommand(Cquit, @DoQuit);
  118.         SetFSetMenu(Cundo, @SetEditMenus);
  119.         SetFSetMenu(Ccut, @SetEditMenus);
  120.         SetFSetMenu(Ccopy, @SetEditMenus);
  121.         SetFSetMenu(Cpaste, @SetEditMenus);
  122.         SetFSetMenu(Cclear, @SetEditMenus);
  123.         SetFSetMenu(Cselectall, @SetEditMenus);
  124.         SetFMenus;
  125.         dummyb := SetOOMenuBar;
  126.         DrawMenuBar;
  127.     end;
  128.  
  129. {$S Term}
  130.     procedure FinishOOMenus;
  131.     begin
  132.         FinishFMenus;
  133.     end;
  134.  
  135. end.